package com.wx.chapter17.homework;

/**
 * @Author : 佩萁
 * Description :
 * @Create : 2023/8/21 - 17:15
 */
public class Homework02 {
    public static void main(String[] args) {
        T t = new T();
        Thread t1 = new Thread(t);
        Thread t2 = new Thread(t);
        t1.setName("t1");
        t2.setName("t2");
        t1.start();
        t2.start();
    }
}

//编程取款的线程
//1.因为这里涉及到多个线程共享资源，所以我们使用实现Runnable方式
//2. 每次取出 1000
class T implements Runnable {
    private int money = 10000;

    @Override
    public void run() {
        while (true) {
            //这里使用synchronized实现线程同步，它是一个非公平锁，不管线程到的先后顺序
            //当多个线程到这里，就回去争夺this对象锁
            //争夺不到this对象锁的，就blocked，准备继续争夺
            synchronized (this) {
                //判断余额是否足够
                if (money < 1000) {
                    System.out.println("余额不足");
                    break;
                }
                money -= 1000;
                System.out.println(Thread.currentThread().getName() + " 取出了1000 当前余额=" + money);
            }
            //休眠1s
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}